const getOptions = require('loader-utils');

// loader主要是用来处理字符串

module.exports = function (content, map, meta) {
  // loader的执行是类似洋葱圈模型的
  let option = getOptions.getOptions(this); // 取到webpack设置好的options
  console.log(
    option
    // content, // 源代码字符串
    // this.data.value, // 拿到pitch阶段设置的值
    // this.version, // loader API 的版本号
    // this.context, // 模块所在的目录
    // this.request, // 被解析出来的 request 字符串
    // this.resource, // request 中的资源部分，包括 query 参数
    // this.resourcePath, // 资源文件的路径
    // this.resourceQuery, // 资源的 query 参数
    // this.target, // 编译的目标。从配置选项中传递过来的。'web', 'node'
    // this.webpack, // 如果是由 webpack 编译的，这个布尔值会被设置为真
    // this.emitWarning('警告') // 发出警告
    // this.emitError('错误') // 发出错误
  );
  // this.callback(err, content) // 用了这个就不用return。第一个参数固定是err。可以通过this.async()获取

  return content.replace(/测试loader/g, option.textString); // 处理完loader接收的内容一定要返回(因为下传给其他的webpack程序进行处理)
};

module.exports.pitch = function (remainingRequest, precedingRequest, data) {
  data.value = 12345; // 设置pitch的data值可以传给上面的方法
  // console.log('pitch', remainingRequest, precedingRequest, data)
};
